#pragma once
#ifndef _TRACKER_H_
#define _TRACKER_H_

#include <opencv2\opencv.hpp>
#include <string>
#include "common.h"

//#include <algorithm>

class Tracker
{
public:
	Tracker() : thr_fb(30) {}
	virtual ~Tracker() { }

	virtual void init(const cv::Rect &roi, cv::Mat image) = 0;
	virtual cv::Rect  update(cv::Mat image) = 0;
	virtual void track(const Mat im_prev, const Mat im_gray, const vector<Point2f> & points_prev, vector<Point2f> & points_tracked, vector<unsigned char> & status); //CMT

private:
	float thr_fb;

protected:
	cv::Rect_<float> _roi;
};
#endif // !_TRACKER_H_

